const Koa = require('koa')
const router = require('koa-router')()
const render = require('koa-art-template')
const path = require('path')
const session = require('koa-session')

// 实例化
const app = new Koa()

// 配置art模板引擎
render(app, {
  root: path.join(__dirname, 'views'), //视图的位置
  extname: '.html', //后缀名 
  debug: process.env.NODE_ENV !== 'production' //是否开启调试模式
})


// 配置session的中间件
app.keys = ['some secret hurr'] /** cookie的签名 */
const CONFIG = {
  key: 'koa.sess', /** 默认 */
  maxAge: 60 * 1000, /** cookie的过期时间【需要修改】 */
  overwrite: true, /** (boolean) can overwrite or not (default true) 没有效果，默认 */
  httpOnly: true, /** true:表示服务器端可以获取cookie */
  signed: true, /** 默认签名 */
  rolling: true, /** 每次请求时强行设置cookie，这将重置cookie过期时间（默认:false）【需要修改】 */
  renew: false, /** 当session快过期的时候重新设置【需要修改】 */
}
app.use(session(CONFIG, app))

//路由配置
router.get('/', async (ctx) => {
  console.log(ctx.session.userinfo)

  // 正常这样配置就可以用
  // 汉字cookie需要转化为base64
  const userinfo = new Buffer('张三').toString('base64') //转换为base64
  ctx.cookies.set('userinfo', userinfo, {
    maxAge: 60 * 1000 * 60
  })


  const data = { 
    name:'limi',
  }
  await ctx.render('index', {
    data
  })
})

router.get('/login', async (ctx) => {
  ctx.session.userinfo = '李四'
  ctx.body = '登录成功'
})

router.get('/news', async (ctx) => {
  console.log(ctx.session.userinfo)

  const baseStr = ctx.cookies.get('userinfo')
  const userinfo = new Buffer(baseStr, 'base64').toString()
  console.log(userinfo)
  const data = { 
    name:'limi'
  }
  await ctx.render('news', {
    data
  })
})


router.get('/shop', async (ctx) => {
  console.log(ctx.session.userinfo)

  const data = ctx.cookies.get('userinfo')
  const userinfo = new Buffer(data, 'base64').toString()
  console.log(userinfo)
  ctx.body = '这是一个商品页面---' + userinfo
})

//启动路由
app.use(router.routes())
app.use(router.allowedMethods())
app.listen(3000)